package com.cynthia.system.controller;


import com.cynthia.system.model.SysRole;
import com.cynthia.system.model.SysUser;
import com.cynthia.system.model.SysUserRole;
import com.cynthia.system.service.ISysRoleService;
import com.cynthia.system.service.ISysUserRoleService;
import com.cynthia.system.service.ISysUserService;
import com.cynthia.utils.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 * 角色表 前端控制器
 * </p>
 *
 * @author cynthia
 * @since 2021-12-15
 */
@Controller
@RequestMapping("/sys-role")
public class SysRoleController extends BaseController {
    /*//注入业务接口
    @Autowired
    private ISysUserService iSysUserService;
    @Autowired
    private ISysRoleService iSysRoleService;
    @Autowired
    private ISysUserRoleService iSysUserRoleService;*/

    /*-----查询-----角色列表-----*/
    @RequestMapping("/list")
    public String list(Model model){
        //内置的方法list
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        System.out.println("===查询角色列表===list()===");
        return "/view/system/role/roleList";
    }

    /*-----添加UI-----角色-----*/
    @RequestMapping("/addUI")
    public String addUI(Model model){
        System.out.println("===添加UI===addUI()===");
        return "/view/system/role/addRole";
    }

    /*-----添加-----角色-----*/
    @RequestMapping("/add")
    public String add(Model model,SysRole sysRole){
        //获取数据
        System.out.println(sysRole);
        //调用业务
        boolean b=iSysRoleService.save(sysRole);
        //返回roleList页面
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        System.out.println("===添加角色===add()===");
        return "/view/system/role/roleList";
    }

    /*-----删除-----通过roleId删除角色-----*/
    @RequestMapping("/delete")
    public String delete(Model model,int roleId){
        //获取数据
        System.out.println(roleId);
        //调用业务
        boolean b=iSysRoleService.removeById(roleId);
        //返回roleList页面
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        System.out.println("===删除角色===delete()===");
        return "/view/system/role/roleList";
    }

    /*-----修改UI-----角色-----*/
    @RequestMapping("/updateUI")
    public String updateUI(Model model,int roleId){
        //接收数据
        System.out.println(roleId);
        //调用业务
        //通过 roleId用户ID查询对应的角色
        SysRole sysRole_db=iSysRoleService.getById(roleId);
        model.addAttribute("sysRole_db",sysRole_db);
        System.out.println("===修改UI===updateUI()===");
        //返回updateRole页面
        return "/view/system/role/updateRole";
    }

    /*-----修改-----角色-----*/
    @RequestMapping("/update")
    public String update(Model model,SysRole sysRole){
        //获取数据
        System.out.println(sysRole);
        //调用业务进行更新
        boolean b=iSysRoleService.saveOrUpdate(sysRole);
        //返回roleList页面
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        System.out.println("===修改角色===update()===");
        return "/view/system/role/roleList";
    }

    /*-----分配角色UI-----*/
    @RequestMapping("/FPRoleUI")
    public String FPRoleUI(Model model,int userId){

        //准备用户信息
        SysUser sysUser_db=iSysUserService.getById(userId);
        model.addAttribute("sysUser_db",sysUser_db);
        //System.out.println("数据库返回的用户信息："+sysUser_db);
        //准备分配角色信息
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        System.out.println("===分配角色UI===FPRoleUI()===");
        //返回FPRole页面
        return "/view/system/role/FPRole";
    }


    /*-----分配角色-----*/
    @RequestMapping("/FPRole")
    public String FPRole(Model model,int userId,int roleId,SysUserRole sysUserRole){
        //获取用户id
        System.out.println("获取用户id:"+userId);
        //获取角色id
        System.out.println("获取角色id:"+roleId);

        //当同一个userId多次分配角色时，数据库会多次记录，为避免重复
        //先判断数据库中是否已经有了记录
        boolean flag=iSysUserRoleService.deleteSysUserRoleByUserId(userId);
        //保存数据
        boolean b=iSysUserRoleService.save(sysUserRole);

        //准备用户信息
        SysUser sysUser_db=iSysUserService.getById(userId);
        model.addAttribute("sysUser_db",sysUser_db);
        System.out.println("数据库返回的用户信息："+sysUser_db);
        //准备分配角色信息
        List<SysRole> sysRoleList_db=iSysRoleService.queryRoleList();
        model.addAttribute("sysRoleList_db",sysRoleList_db);
        //调用业务进行更新

        System.out.println("===分配角色===FPRole()===");
        //返回FPRole页面
        return "/view/system/role/FPRole";
    }
}
